package com.kws.payment.dao;

import io.swagger.annotations.ApiModelProperty;

import java.util.List;

/**
 * <b>UnionPayAppOrderRq</b>
 *
 * @description: UnionPayAppOrderRq <br>
 * @date: 2024/12/25 15:21 <br>
 * @author: lhm <br>
 * @version: 1.0 <br>
 */
public class UnionPayAppOrderRq {
    @ApiModelProperty(value = "报文请求时间 格式yyyy-MM-dd HH:mm:ss")
    private String requestTimestamp;

    @ApiModelProperty(value = "商户订单号")
    private String merOrderId;

    @ApiModelProperty(value = "商户号")
    private String mid;


    @ApiModelProperty(value = "终端号")
    private String tid;

    @ApiModelProperty(value = "支付总金额 单位分")
    private String totalAmount;

    @ApiModelProperty(value = "微信子商户appId")
    private String subAppId;

    @ApiModelProperty(value = "消息ID，原样返回")
    private String msgId;

    @ApiModelProperty(value = "请求系统预留字段")
    private String  srcReserve;

    @ApiModelProperty(value = "机构商户号")
    private String instMid;

    @ApiModelProperty(value = "商品信息")
    private List<GoodsRq> goods;

    @ApiModelProperty(value = "商户附加数据")
    private String attachedData;

    @ApiModelProperty(value = "订单过期时间 为空则使用系统默认过期时间（30分钟），格式yyyy-MM-dd HH:mm:ss")
    private String expireTime;

    @ApiModelProperty(value = "商品标记 用于优惠活动")
    private String goodsTag;

    @ApiModelProperty(value = "账单描述")
    private String orderDesc;

    @ApiModelProperty(value = "订单原始金额 单位分，用于记录前端系统打折前的金额")
    private String originalAmount;

    @ApiModelProperty(value = "分账标记 若为true，则goods字段和subOrders字段不能同时为空；且secureTransaction字段上送false或不上送")
    private boolean divisionFlag;

    @ApiModelProperty(value = "异步分账标记 若为true，则goods字段和subOrders字段不能同时为空； 且secureTransaction字段上送false或不上送。 退货订单不允许做子订单操作 已确认的子订单，不允许隔天再确认")
    private boolean asynDivisionFlag;

    @ApiModelProperty(value = "平台商户分账金额 若分账标记传，则分账金额必传")
    private Integer platformAmount;

    @ApiModelProperty(value = "子订单信息 在传分账标记的情况下，若传子商户号，子商户分账金额必传，即ubOrders每个元素的mid和totalAmount非空且mid不超过20")
    private List<SubOrdersRq> subOrders;

    @ApiModelProperty(value = "支付结果通知地址")
    private String notifyUrl;

    @ApiModelProperty(value = "订单展示页面")
    private String showUrl;

    @ApiModelProperty(value = "是否需要限制信用卡支付 取值：true或false，默认false")
    private String limitCreditCard;

    @ApiModelProperty(value = "花呗分期数 取值：仅支持3、6、12")
    private Integer installmentNumber;

    public String getRequestTimestamp() {
        return requestTimestamp;
    }

    public void setRequestTimestamp(String requestTimestamp) {
        this.requestTimestamp = requestTimestamp;
    }

    public String getMerOrderId() {
        return merOrderId;
    }

    public void setMerOrderId(String merOrderId) {
        this.merOrderId = merOrderId;
    }

    public String getMid() {
        return mid;
    }

    public void setMid(String mid) {
        this.mid = mid;
    }

    public String getTid() {
        return tid;
    }

    public void setTid(String tid) {
        this.tid = tid;
    }

    public String getTotalAmount() {
        return totalAmount;
    }

    public void setTotalAmount(String totalAmount) {
        this.totalAmount = totalAmount;
    }

    public String getSubAppId() {
        return subAppId;
    }

    public void setSubAppId(String subAppId) {
        this.subAppId = subAppId;
    }

    public String getMsgId() {
        return msgId;
    }

    public void setMsgId(String msgId) {
        this.msgId = msgId;
    }

    public String getSrcReserve() {
        return srcReserve;
    }

    public void setSrcReserve(String srcReserve) {
        this.srcReserve = srcReserve;
    }

    public String getInstMid() {
        return instMid;
    }

    public void setInstMid(String instMid) {
        this.instMid = instMid;
    }

    public List<GoodsRq> getGoods() {
        return goods;
    }

    public void setGoods(List<GoodsRq> goods) {
        this.goods = goods;
    }

    public String getAttachedData() {
        return attachedData;
    }

    public void setAttachedData(String attachedData) {
        this.attachedData = attachedData;
    }

    public String getExpireTime() {
        return expireTime;
    }

    public void setExpireTime(String expireTime) {
        this.expireTime = expireTime;
    }

    public String getGoodsTag() {
        return goodsTag;
    }

    public void setGoodsTag(String goodsTag) {
        this.goodsTag = goodsTag;
    }

    public String getOrderDesc() {
        return orderDesc;
    }

    public void setOrderDesc(String orderDesc) {
        this.orderDesc = orderDesc;
    }

    public String getOriginalAmount() {
        return originalAmount;
    }

    public void setOriginalAmount(String originalAmount) {
        this.originalAmount = originalAmount;
    }

    public boolean isDivisionFlag() {
        return divisionFlag;
    }

    public void setDivisionFlag(boolean divisionFlag) {
        this.divisionFlag = divisionFlag;
    }

    public boolean isAsynDivisionFlag() {
        return asynDivisionFlag;
    }

    public void setAsynDivisionFlag(boolean asynDivisionFlag) {
        this.asynDivisionFlag = asynDivisionFlag;
    }

    public Integer getPlatformAmount() {
        return platformAmount;
    }

    public void setPlatformAmount(Integer platformAmount) {
        this.platformAmount = platformAmount;
    }

    public List<SubOrdersRq> getSubOrders() {
        return subOrders;
    }

    public void setSubOrders(List<SubOrdersRq> subOrders) {
        this.subOrders = subOrders;
    }

    public String getNotifyUrl() {
        return notifyUrl;
    }

    public void setNotifyUrl(String notifyUrl) {
        this.notifyUrl = notifyUrl;
    }

    public String getShowUrl() {
        return showUrl;
    }

    public void setShowUrl(String showUrl) {
        this.showUrl = showUrl;
    }

    public String getLimitCreditCard() {
        return limitCreditCard;
    }

    public void setLimitCreditCard(String limitCreditCard) {
        this.limitCreditCard = limitCreditCard;
    }

    public Integer getInstallmentNumber() {
        return installmentNumber;
    }

    public void setInstallmentNumber(Integer installmentNumber) {
        this.installmentNumber = installmentNumber;
    }
}
